home *** CD-ROM | disk | FTP | other *** search
/ 8bitfiles.net/archives / archives.tar / archives / genie-commodore-file-library / C64-128Toolkit / MSD-DU07.ARC / MSD FILE PROTECT (.txt) < prev    next >
Encoding:
Commodore BASIC  |  2019-04-13  |  5.3 KB  |  171 lines

  1. 1 REM MSD FILE PROTECTOR
  2. 2 REM ORIGINAL PROGRAM : COMPUTE APR 85
  3. 3 REM MODIFIED FOR MSD DISK DRIVE
  4. 5 PRINT"[147]":Q$=CHR$(13)
  5. 10 U$="                                        ":KB=198:SF=653:KL=203:NS=12
  6. 20 F1=4:F7=3:POKE53281,12:POKE53280,6
  7. 50 GOSUB1240:GOTO1080
  8. 60 PRINT#15,"U1";2;0;T;S:GOTO670
  9. 70 PRINT#15,"B-P 2 0":PRINT#15,"U2";2;0;T;S:GOTO670
  10. 80 T=PEEK(681):S=PEEK(682):RETURN
  11. 90 REM:::LOCK ALL FILES:::
  12. 100 PRINT"[147]"SPC(NS)"LOCK ALL FILES":PRINTU$:GOSUB660:T=18:S=1
  13. 110 P=2:GOSUB60
  14. 120 GET#2,A$:T1=ASC(A$+CHR$(0)):GET#2,A$:S1=ASC(A$+CHR$(0))
  15. 130 FORI=0TO7:PRINT#15,"B-P";2;P+32*I
  16. 140 GET#2,A$:A=ASC(A$+CHR$(0)):IFA=.THEN170
  17. 150 IFAAND64THEN170
  18. 160 PRINT#15,"B-P";2;P+32*I:PRINT#2,CHR$(AOR64);
  19. 170 NEXT:GOSUB70:IFETHENRETURN
  20. 180 PRINT"TRACK"T"SECTOR"S"IS LOCKED":T=T1:S=S1:IFTTHEN110
  21. 190 GOSUB730:GOSUB740:RETURN
  22. 200 REM:::READ DIRECTORY:::
  23. 210 H$=CHR$(18):PRINT"[147]HOLD [SHIFT] TO PAUSE
  24. 220 [159]15,8,15:[159]1,8,0,"$0"
  25. 221 [161]#1,A$:[161]#1,A$:BY[178]26
  26. 222 [161]#1,A$:[161]#1,A$
  27. 223 [161]#1,A$:BL[178][198](A$[170][199](0))
  28. 224 [161]#1,A$:BL[178]BL[170]256[172][198](A$[170][199](0))
  29. 225 N$[178]"":[129]K[178]1[164]BY
  30. 226 [139][194](SF)[167][146]SF,1,1
  31. 230 [161]#1,A$:[139]ST[179][177]0[137]234
  32. 231 N$[178]N$[170]A$:[130]
  33. 232 [153]BL;N$:BY[178]28
  34. 233 [139]ST[178]0[137]222
  35. 234 [153]BL;N$
  36. 235 [160]1:[160]15
  37. 280 [141]730:[141]740:[151]140,0:[142]
  38. 290 [143]:::INPUT NAME:::
  39. 300 [153]"[F1] EXIT             [F7] DIRECTORY
  40. 310 PRINT"FILENAME? "CU$;:POKEKB,0:F$=""
  41. 320 KQ=PEEK(KL):GETA$:IFA$=""ANDKQ=64THEN320
  42. 330 IFKQ=F1ORKQ=F7THENPRINTCHR$(20):RETURN
  43. 340 IF A$=CHR$(20)ANDF$=""THEN320
  44. 350 IFA$=CHR$(13)ANDF$<>""THENPRINTCHR$(20):RETURN
  45. 360 IFA$=CHR$(13)ANDF$=""THEN320
  46. 370 IFA$=CHR$(20)THENPRINTCHR$(20)A$CU$;:F$=LEFT$(F$,LEN(F$)-1):GOTO320
  47. 380 PRINTCHR$(20)A$CU$;:F$=F$+A$:GOTO320
  48. 390 REM:::LOCK A FILE:::
  49. 400 PRINT"[147]";
  50. 405 PRINTSPC(NS)"LOCK A FILE":PRINTU$
  51. 410 GOSUB300:IFKQ=F1THENRETURN
  52. 420 IFKQ=F7THENGOSUB210:GOTO400
  53. 430 POKE679,1:GOSUB780:GOSUB660:T=18:S=1
  54. 440 GOSUB60:SYS828:A=PEEK(252):IFATHEN470
  55. 450 GOSUB80:IFTTHEN440
  56. 460 PRINT"FILE NOT FOUND[144]":GOTO410
  57. 470 IF(AAND64)THENPRINTF$:PRINT" IS ALREADY LOCKED":GOSUB730:GOSUB740:GOTO510
  58. 480 P=PEEK(255):GOSUB60:PRINT#15,"B-P";2;P:PRINT#2,CHR$(AOR64);
  59. 490 GOSUB70:IFETHEN400
  60. 500 GOSUB730:PRINTF$:PRINT"IS LOCKED":GOSUB740
  61. 510 POKE679,0:GOTO400
  62. 520 REM:::UNLOCK A FILE:::
  63. 530 PRINT"[147]";
  64. 535 PRINTSPC(NS)"UNLOCK A FILE":PRINTU$
  65. 540 GOSUB300:IFKQ=F1THENRETURN
  66. 550 IFKQ=F7THENGOSUB210:GOTO530
  67. 560 POKE679,1:GOSUB780:GOSUB660:T=18:S=1
  68. 570 GOSUB60:SYS828:A=PEEK(252):IFATHEN600
  69. 580 GOSUB80:IFTTHEN570
  70. 590 PRINT"FILE NOT FOUND[144]":GOTO540
  71. 600 IF(AAND64)=.THENPRINTF$Q$"IS ALREADY UNLOCKED":GOSUB730:GOSUB740:GOTO640
  72. 610 P=PEEK(255):GOSUB60:PRINT#15,"B-P";2;P:PRINT#2,CHR$(AAND135);
  73. 620 GOSUB70:IFETHEN530
  74. 630 GOSUB730:PRINTF$:PRINT"IS UNLOCKED":GOSUB740
  75. 640 POKE679,0:GOTO530
  76. 650 REM:::OPEN FILE:::
  77. 660 CLOSE2:CLOSE15:OPEN15,8,15,"I0":OPEN2,8,2,"#"
  78. 670 INPUT#15,E,EM$,ET,ES
  79. 680 IFE=73ORE=26THENGOSUB730:GOTO710
  80. 690 IFETHENPRINT"ERROR:":PRINTE","EM$","ET","ES"[144]":GOSUB730:END
  81. 700 RETURN
  82. 710 IFE=73THENPRINT"DISK IS WRITE PROTECTED*":GOSUB740:RETURN
  83. 720 PRINT"REMOVE WRITE PROTECT TAB":GOSUB740:RETURN
  84. 730 CLOSE2:CLOSE15:RETURN
  85. 740 PRINT"PRESS ANY KEY":POKEKB,0
  86. 750 KQ=PEEK(KL):GETA$:IFA$=""ANDKQ=64THEN750
  87. 760 RETURN
  88. 770 REM:::STORE NAME FOR ML:::
  89. 780 IFLEN(F$)<16THENF$=F$+CHR$(160):GOTO780
  90. 790 FORI=1TOLEN(F$):POKE683+I,ASC(MID$(F$,I,1)):NEXT:POKE700,0:RETURN
  91. 800 REM:::WRITE PROTECT* DISK:::
  92. 810 PRINT"[147]"SPC(NS)"WRITE PROTECT* DISK":PRINTU$
  93. 820 PRINT"INSERT DISK IN DRIVE  [F1] TO ABORT":FORTD=1TO900:NEXT:GOSUB740
  94. 830 IFKQ=F1THENRETURN
  95. 840 GOSUB660:T=18:S=0:GOSUB60:PRINT#15,"B-P 2 2"
  96. 850 PRINT#2,CHR$(66);:PRINT#15,"B-P 2 166":PRINT#2,CHR$(66);:GOSUB70:IFETHEN810
  97. 860 GOSUB660:GOSUB730
  98. 870 PRINT"THE DISK IS NOW WRITE PROTECTED":GOSUB740:RETURN
  99. 880 REM:::SCRATCH A FILE:::
  100. 890 PRINT"[147]";
  101. 895 PRINTSPC(NS)"SCRATCH A FILE":PRINTU$
  102. 900 GOSUB300:IFKQ=F1THENRETURN
  103. 910 IFKQ=F7THENGOSUB210:GOTO890
  104. 920 INPUT"ARE YOU SURE";A$:IFA$<>"Y"THEN890
  105. 930 GOSUB660:PRINT#15,"S0:"+F$:INPUT#15,E,EM$,ET,ES:IFE>1THENGOSUB680:GOTO890
  106. 940 GOSUB730:IFET=.THENPRINT"FILE IS LOCKED OR NOT ON DISK[144]":GOSUB740:GOTO890
  107. 950 IFET>1THENPRINTET;EM$:GOSUB740:GOTO890
  108. 960 PRINTF$:PRINT"IS SCRATCHED":GOSUB740:GOTO890
  109. 970 REM:::UNLOCK A DISK:::
  110. 980 PRINT"[147]"SPC(NS)" REMOVE WRITE PROTECT*":PRINTU$
  111. 990 PRINT"INSERT DISK IN DRIVE   [F1] TO ABORT":FORTD=1TO900:NEXT:GOSUB740
  112. 1000 IFKQ=F1THENRETURN
  113. 1010 GOSUB660:T=18:S=0:GOSUB60
  114. 1020 PRINT#15,"M-W";CHR$(136);CHR$(76);CHR$(1);CHR$(65);
  115. 1030 PRINT#15,"B-P 2 2":PRINT#2,CHR$(65);:PRINT#15,"B-P 2 166"
  116. 1040 PRINT#2,CHR$(65);:GOSUB70:IFETHEN980
  117. 1050 GOSUB660:GOSUB730:PRINT"DISK HAS WRITE PROTECT REMOVED"
  118. 1060 GOSUB740:RETURN
  119. 1070 REM:::MAIN MENU:::
  120. 1080 PRINT"[147][144]"SPC(NS-2)"<<FILE PROTECTOR>>"
  121. 1090 PRINT" 1) DIRECTORY
  122. 1100 [153]" 2) LOCK ALL FILES
  123. 1110 PRINT" 3) LOCK A FILE
  124. 1120 [153]" 4) UNLOCK A FILE
  125. 1130 PRINT" 5) WRITE PROTECT* DISK
  126. 1140 [153]" 6) REMOVE WRITE PROTECT*
  127. 1150 PRINT" 7) SCRATCH A FILE
  128. 1160 [153]" 8) QUIT
  129. 1165 PRINT" 9) INSTRUCTIONS AND WARNINGS[144]
  130. 1170 [153]" ENTER YOUR CHOICE"
  131. 1180 [161]A$:[139]A$[178]""[167]1180
  132. 1190 C[178][197](A$):[139]C[179]1[176]C[177]9[167]1180
  133. 1200 [145]C[141]210,100,400,530,810,980,890,1220,1500
  134. 1210 [137]1080
  135. 1220 [160]2:[160]15:[128]
  136. 1230 [143]:::VARIABLES & M/L:::
  137. 1240 [151]679,0:[151]140,0:CU$[178][199](31)[170][199](161)[170][199](144)
  138. 1250 [129]QZ[178]828[164]1006:[135]ZQ:[151]QZ,ZQ:[130]:[142]
  139. 1260 [131] 169,0,141,168,2,133,253,162,2,32,198,255,32
  140. 1270 [131] 228,255,141,169,2,32,228,255,141,170,2,230,253
  141. 1280 [131]230,253,32,228,255,133,252,165,253,133,255,32,228
  142. 1290 [131] 255,32,228,255,230,253,230,253,160,0,32,228,255
  143. 1300 [131] 230,253,153,189,2,200,24,192,16,144,242,160,243
  144. 1310 [131] 32,228,255,230,253,165,144,240,3,141,168,2,200
  145. 1320 [131] 208,241,165,252,208,7,173,168,2,208,22,240,191
  146. 1330 [131] 165,140,240,3,32,199,3,173,167,2,240,3,32
  147. 1340 [131] 175,3,173,168,2,240,171,32,204,255,96,160,0
  148. 1350 [131] 185,172,2,240,8,217,189,2,208,7,200,208,243
  149. 1360 [131] 238,168,2,96,169,0,133,252
  150. 1370 [131] 96,160,0,185,189,2,240,6,32,210,255,200,208
  151. 1380 [131] 245,165,252,41,64,240,10,169,144,32,210,255,169,60,32,210,255,169
  152. 1390 [131] 13,32,210,255,169,144,32,210,255,96
  153. 1500 [153]"LOAD"[166]NS[171]2)"<<FILE PROTECTOR>>"
  154. 1510 [153]" WARNINGSTOP : DO NOT USE THIS PROGRAM ON"
  155. 1515 [153]" COPY PROTECTED COMMERICAL SOFTWARE!!"
  156. 1520 [153]"  NOTE1 : WHEN A FILE IS LOCKED IT"
  157. 1521 [153]" CAN NOT BE SCRATCHED, UNTIL IT IS "
  158. 1522 [153]" UNLOCKED.  THE DIRECTORY INDICATES A"
  159. 1523 [153]" LOCKED FILE WITH A '<' SYMBOL.
  160. 1525 PRINT"  NOTE2 : WRITE PROTECT* IS A SOFTWARE"
  161. 1526 PRINT" TYPE OF WRITE PROTECTION. AS WITH THE"
  162. 1527 PRINT" WRITE PROTECT TAB IT WILL PREVENT THE"
  163. 1528 PRINT" DISK BEING WRITTEN TO, FILES BEING"
  164. 1529 PRINT" SCRATCHED OR THE CLEARING OF DIRECTORY"
  165. 1530 PRINT" WITH A SHORT NEW IE. OPEN 15,8,15,"
  166. 1531 PRINT" 'N0:DISKNAME', BUT[144] WRITE PROTECT* WILL"
  167. 1532 PRINT"[160]NOT[144] PREVENT A FULL NEW - REFORMAT IE. "
  168. 1533 PRINT" OPEN15,8,15,'N0:DISKNAME,ID#' "
  169. 1570 GOSUB 740
  170. 1600 RETURN
  171.